﻿<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:element name="loggerConfiguration">
		<xs:complexType>
			<xs:sequence minOccurs="1" maxOccurs="1">
				<xs:element name="loggers">
					<xs:complexType>
						<xs:choice minOccurs="0" maxOccurs="unbounded">
							<xs:element name="add">
								<xs:complexType>
									<xs:attribute name="name" type="xs:string" use="required" />
									<xs:attribute name="loggerType">
										<xs:simpleType>
											<xs:restriction base="xs:string">
												<xs:enumeration value="technical"/>
												<xs:enumeration value="business"/>
											</xs:restriction>
										</xs:simpleType>
									</xs:attribute>
									<xs:attribute name="implementation" type="xs:string" use="required" />
									<xs:attribute name="category" type="xs:string" use="optional" />
									<xs:attribute name="isDefault" type="xs:boolean" use="optional" />
								</xs:complexType>
							</xs:element>
							<xs:element name="remove">
								<xs:complexType>
									<xs:attribute name="name" type="xs:string" use="required" />
								</xs:complexType>
							</xs:element>
							<xs:element name="clear" />
						</xs:choice>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="nhibernateConfiguration">
		<xs:complexType>
			<xs:sequence minOccurs="1" maxOccurs="1">
				<xs:element name="file" minOccurs="1" maxOccurs="1">
					<xs:complexType>
						<xs:attribute name="resource" type="xs:string" use="required" />
						<xs:attribute name="assembly" type="xs:string" use="optional" />
						<xs:attribute name="flushMode">
							<xs:simpleType>
								<xs:restriction base="xs:string">
									<xs:enumeration value="auto"/>
									<xs:enumeration value="commit"/>
									<xs:enumeration value="always"/>
									<xs:enumeration value="unspecified"/>
								</xs:restriction>
							</xs:simpleType>
						</xs:attribute>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="factoryConfiguration">
		<xs:complexType>
			<xs:sequence minOccurs="1" maxOccurs="1">
				<xs:element name="typeAliases">
					<xs:complexType>
						<xs:choice minOccurs="0" maxOccurs="unbounded">
							<xs:element name="add">
								<xs:complexType>
									<xs:attribute name="interface" type="xs:string" use="required" />
									<xs:attribute name="invokeWebService" type="xs:boolean" use="optional" default="false" />
									<xs:attribute name="implementation" type="xs:string" use="optional" />
									<xs:attribute name="endpointConfigurationName" type="xs:string" use="optional" />
									<xs:attribute name="cache" type="xs:boolean" use="optional" default="true" />
								</xs:complexType>
							</xs:element>
							<xs:element name="remove">
								<xs:complexType>
									<xs:attribute name="interface" type="xs:string" use="required" />
								</xs:complexType>
							</xs:element>
							<xs:element name="clear" />
						</xs:choice>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
			<xs:attribute name="defaultAssembly" type="xs:string" use="optional" />
			<xs:attribute name="assemblyDirectory" type="xs:string" use="optional" />
			<xs:attribute name="enableCaching" type="xs:boolean" default="true" use="optional"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="mailConnectorConfiguration">
		<xs:complexType>
			<xs:sequence minOccurs="1" maxOccurs="1">
				<xs:element name="smtp">
					<xs:complexType>
						<xs:attribute name="host" type="xs:string" use="required"/>
						<xs:attribute name="port" type="xs:int" use="optional" default="25"/>
						<xs:attribute name="enableSsl" type="xs:boolean" use="optional" default="false"/>
						<xs:attribute name="useDefaultCredentials" type="xs:boolean" use="optional" default="true"/>
						<xs:attribute name="username" type="xs:string" use="optional"/>
						<xs:attribute name="password" type="xs:string" use="optional"/>
						<xs:attribute name="senderName" type="xs:string" use="optional"/>
						<xs:attribute name="senderEmail" type="xs:string" use="optional"/>
						<xs:attribute name="enableAsyncSend" type="xs:boolean" use="optional" default="false"/>
						<xs:attribute name="timeout" type="xs:int" use="optional" default="100">
							<xs:annotation>
								<xs:documentation>
									<![CDATA[The timeout in seconds for send operations]]>
								</xs:documentation>
							</xs:annotation>
						</xs:attribute>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
			<xs:attribute name="debug" type="xs:boolean" default="true" use="optional"/>
		</xs:complexType>
	</xs:element>
	<xs:element name="authorisationConfiguration">
		<xs:complexType>
			<xs:sequence minOccurs="1" maxOccurs="1">
				<xs:element name="services">
					<xs:complexType>
						<xs:choice minOccurs="1" maxOccurs="unbounded">
							<xs:element name="add">
								<xs:complexType>
									<xs:attribute name="name" type="xs:string" use="required"/>
									<xs:attribute name="server" type="xs:string" use="required"/>
									<xs:attribute name="port" type="xs:int" use="optional" default="3268"/>
									<xs:attribute name="baseDn" type="xs:string" use="optional"/>
									<xs:attribute name="bindUserDn" type="xs:string" use="optional" default=""/>
									<xs:attribute name="bindUserPassword" type="xs:string" use="optional" default=""/>
									<xs:attribute name="uidAttribute" type="xs:string" use="optional" default="sAMAccountName"/>
									<xs:attribute name="implementation" type="xs:string" use="required"/>
								</xs:complexType>
							</xs:element>
							<xs:element name="remove">
								<xs:complexType>
									<xs:attribute name="name" use="required" type="xs:string"/>
								</xs:complexType>
							</xs:element>
							<xs:element name="clear"/>
						</xs:choice>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="iocConfiguration">
		<xs:complexType>
			<xs:sequence minOccurs="1" maxOccurs="1">
				<xs:element name="containers">
					<xs:complexType>
						<xs:choice minOccurs="1" maxOccurs="unbounded">
							<xs:element name="add">
								<xs:complexType>
									<xs:attribute name="name" type="xs:string" use="required"/>
									<xs:attribute name="default" type="xs:boolean" default="false" use="optional"/>
									<xs:attribute name="implementation" type="xs:string" use="required"/>
								</xs:complexType>
							</xs:element>
							<xs:element name="remove">
								<xs:complexType>
									<xs:attribute name="name" type="xs:string" use="required"/>
								</xs:complexType>
							</xs:element>
							<xs:element name="clear"/>
						</xs:choice>
					</xs:complexType>
				</xs:element>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema>